home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Programming / VisualBuilder / source / DropObjSubs.c < prev    next >
Text File  |  1997-08-22  |  3KB  |  101 lines

  1. Object *CreateDropObj(int type)
  2. { switch (type)
  3.     { case MUIC_DropButton:        return(DropButtonObject("Button"));
  4.       case MUIC_DropText:          return(DropTextObject("Text"));
  5.       case MUIC_DropListview:      return(DropListviewObject);
  6.       case MUIC_DropString:        return(DropStringObject("String"));
  7.       case MUIC_DropCycle:         return(DropCycleObject(entries));
  8.       case MUIC_DropRadio:         return(DropRadioObject(entries));
  9.       case MUIC_DropCheckmark:     return(DropCheckmarkObject);
  10.       case MUIC_DropGroup:         return(DropGroupObject("Group"), Child, HSpace(1), End);
  11.       case MUIC_DropGauge:         return(DropGaugeObject);
  12.       case MUIC_DropScale:         return(DropScaleObject);
  13.       case MUIC_DropBalance:       return(DropBalanceObject);
  14.       case MUIC_DropImage:         return(DropImageObject);
  15.       case MUIC_DropSlider:        return(DropSliderObject);
  16.       case MUIC_DropKnob:          return(DropKnobObject);
  17.       case MUIC_DropLevelmeter:    return(DropLevelmeterObject);
  18.       case MUIC_DropNumericbutton: return(DropNumericbuttonObject);
  19.       default:                     return(NULL);
  20.     }    
  21. }
  22.         
  23. VOID Group_Append(Object *new, Object *group)
  24. {
  25.   if (DoMethod(group,MUIM_Group_InitChange))
  26.   {
  27.     DoMethod(group,OM_ADDMEMBER,new);
  28.     DoMethod(group,MUIM_Group_ExitChange);
  29.   }
  30. }
  31.  
  32. VOID Group_Remove(Object *obj)
  33. {
  34.   Object *group;
  35.   
  36.   get(obj,MUIA_Parent,&group);
  37.   if (DoMethod(group,MUIM_Group_InitChange))
  38.   { 
  39.     DoMethod(group,OM_REMMEMBER,obj);
  40.     DoMethod(group,MUIM_Group_ExitChange);
  41.   }
  42. }
  43.  
  44. VOID Group_Insert(Object *new, Object *obj, Object *group)
  45.   if (DoMethod(group,MUIM_Group_InitChange))
  46.   { 
  47.     Insert_Member(new,obj,group);
  48.     DoMethod(group,MUIM_Group_ExitChange);
  49.   }
  50. }
  51.  
  52. VOID Group_Move(Object *source, Object *dest)
  53.   Object *oldgroup, *newgroup;
  54.   
  55.   get(source,MUIA_Parent,&oldgroup);
  56.   get(dest,MUIA_Parent,&newgroup);
  57.   
  58.   if (DoMethod(oldgroup,MUIM_Group_InitChange))
  59.   { 
  60.     DoMethod(oldgroup,OM_REMMEMBER,source);
  61.     DoMethod(oldgroup,MUIM_Group_ExitChange);
  62.   }
  63.  
  64.   if (DoMethod(newgroup,MUIM_Group_InitChange))
  65.   { 
  66.     Insert_Member(source,dest,newgroup);
  67.     DoMethod(newgroup,MUIM_Group_ExitChange);
  68.   }
  69. }
  70.  
  71. /************************************************************/
  72. /* For now only an objectlist of 100 objects is supported   */
  73. /***********************************************************/
  74. VOID Insert_Member(Object *new, Object *obj, Object *group)
  75.   Object *child, *childlist=NULL, *objlist[100];
  76.   int i;
  77.  
  78.     /* Not very elegant, but there really should be a MUIM_Group_Insert */
  79.     get(group,MUIA_Group_ChildList,&childlist);
  80.  
  81.     /* Get all objects */
  82.     for(i=0;child=NextObject(&childlist);i++)
  83.       objlist[i]=child;
  84.     objlist[i]=NULL;
  85.  
  86.     /* Skip to the object */
  87.     for(i=0;objlist[i]!=obj;i++);
  88.        
  89.     /* Add the new object */
  90.     DoMethod(group,OM_ADDMEMBER,new);
  91.  
  92.     /* Remove and then add then remaining objects to the end of the list*/
  93.     for(;objlist[i]!=NULL;i++)
  94.     { DoMethod(group,OM_REMMEMBER,objlist[i]);
  95.       DoMethod(group,OM_ADDMEMBER,objlist[i]);
  96.     }
  97.